LFS(Linux From Scratch)构建过程全记录:进入Chroot并构建临时工具 | 您所在的位置:网站首页 › linux must run as root › LFS(Linux From Scratch)构建过程全记录:进入Chroot并构建临时工具 |
写在前面 本章将完成临时系统构建的最后缺失部分和各种包构建所需的工具。 解决了所有循环依赖关系后,就可以使用与主机操作系统完全隔离的“chroot”环境进行构建。 注意:接下来的指令,需要切换回root权限下执行改变所有者我们需要将$LFS下文件的所有者设置为root,命令如下 chown -R root:root $LFS/{usr,lib,var,etc,bin,sbin,tools} case $(uname -m) in x86_64) chown -R root:root $LFS/lib64 ;; esac随后,我们需要创建即将用来挂在文件系统的目录,命令如下 mkdir -pv $LFS/{dev,proc,sys,run} 安装和填充/dev我们需要将宿主系统中的/dev挂载到$LFS下的dev中,命令如下 mount -v --bind /dev $LFS/dev执行后会获得如下输出: 挂载剩下的虚拟内核文件系统 mount -v --bind /dev/pts $LFS/dev/pts mount -vt proc proc $LFS/proc mount -vt sysfs sysfs $LFS/sys mount -vt tmpfs tmpfs $LFS/run在某些主机系统中,/dev/shm是到/run/shm的符号链接。上面挂载了/run tmpfs,在本例中需要创建shm目录,命令如下 if [ -h $LFS/dev/shm ]; then mkdir -pv $LFS/$(readlink $LFS/dev/shm) fi进入Chroot环境 现在,构建其余所需工具所需的所有包都已在系统中,是时候进入chroot环境来完成其余临时工具的安装了。 我们切换到chroot环境下正式构建LFS系统了,运行以下命令进入当前仅使用临时工具的环境 chroot "$LFS" /usr/bin/env -i \ HOME=/root \ TERM="$TERM" \ PS1='(lfs chroot) \u:\w\$ ' \ PATH=/usr/bin:/usr/sbin \ /bin/bash --login输入后,我们可以看到以下开头信息: 警告:在这之后的处理中,都是在chroot下进行的,如果出现机器重启的情况,需要重新“挂载和激活/dev” 和“挂载虚拟文件系统”以及“创建shm目录” 建立文件夹 我们创建一些根目录集 mkdir -pv /{boot,home,mnt,opt,srv}通过以下命令在根级别以下创建所需的子目录集 mkdir -pv /etc/{opt,sysconfig} mkdir -pv /lib/firmware mkdir -pv /media/{floppy,cdrom} mkdir -pv /usr/{,local/}{include,src} mkdir -pv /usr/local/{bin,lib,sbin} mkdir -pv /usr/{,local/}share/{color,dict,doc,info,locale,man} mkdir -pv /usr/{,local/}share/{misc,terminfo,zoneinfo} mkdir -pv /usr/{,local/}share/man/man{1..8} mkdir -pv /var/{cache,local,log,mail,opt,spool} mkdir -pv /var/lib/{color,misc,locate} ln -sfv /run /var/run ln -sfv /run/lock /var/lock install -dv -m 0750 /root install -dv -m 1777 /tmp /var/tmp第一个install确保了不是所有人都可以进入/根目录 第二个install确保任何用户都可以写入/tmp和/var/ tmp目录,但不能从其中删除其他用户的文件 创建符号连接 创建符号连接的命令如下 ln -sv /proc/self/mounts /etc/mtab我们创建/ect/hosts文件,命令如下 cat > /etc/hosts /etc/passwd /etc/group > /etc/passwd echo "tester:x:101:" >> /etc/group install -o tester -d /home/tester我们发现,有一句I have no name的提示,如图所示: 由于我们已经创建了/etc/passwd和/etc/group,因此,我们新建一个 |
CopyRight 2018-2019 实验室设备网 版权所有 |